Skip to content

Admin nav owner only - #12

Merged
pip-install-python merged 2 commits into
mainfrom
admin-nav-owner-only
Aug 5, 2026
Merged

Admin nav owner only#12
pip-install-python merged 2 commits into
mainfrom
admin-nav-owner-only

Conversation

@pip-install-python

Copy link
Copy Markdown
Owner

No description provided.

pip-install-python and others added 2 commits August 5, 2026 12:27
The 0.2.2 release payload, plus the dependency work that had to land with it.

dash-clerk-auth 0.9.1 -> 1.0.0, and lib/auth.py stops hand-patching the
satellite. Both fixes it injected are upstream now: 0.9.1 stamps
data-clerk-domain onto the ClerkJS script tag, 0.9.2 replaced the
Clerk.openSignIn() modal — forbidden on a satellite domain — with a navigation
to the primary.

What stays is one *delegated* capture-phase listener on #clerk-login-button.
The package binds that id inside its DOMContentLoaded handler, once, so the
header control is covered but the sign-in card in lib/page_visibility.py is
not: a page callback renders it when a visitor reaches an auth-tier page, long
after that handler ran, and its button would have no listener at all. The
listener now defers to the package's own buildSatelliteRedirect() (0.9.2's
page-JS surface, opt-in via CLERK_SATELLITE_SIGN_IN_REDIRECT) and otherwise
makes the same redirectToSignIn() call upstream does.

1.0.0 requires Python >=3.10 (clerk-backend-api 5.x publishes no 3.9 build, so
the old >=3.9 claim was never installable). That binds the docs site only —
Docker is 3.12, the CI docs matrix is 3.10/3.12/3.13. The dash_leaflet2 package
keeps requires-python >=3.9, which package-python-range proves against the wheel.

dash-emoji-mart and flexlayout-dash now install from PyPI instead of vendored
tarballs, keeping load-bearing floors: >=0.0.5 (0.0.3 errors on init) and
>=1.1.0 (that release renamed the import to flexlayout_dash, which
docs/walking-sim/example.py imports directly). Both re-enter CI's pip-audit,
which skips ./vendor/ lines because pip-audit can only assess PyPI dists.
vendor/ is down to the single Clerk tarball.

README: the 2plot mark now sits inside the anchor, above the wordmark.

Verified: smoke 72/72, check_release clean for 0.2.2, flake8 clean, injected JS
parses, and the rebuilt sdist/wheel carry the README with no vendor/docs leaks.
The requirements.txt resolve itself is the one thing not provable offline — CI
covers it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Production was serving /llms.txt, /sitemap.xml and every canonical link
pointing at http://localhost:8050, and nothing looked wrong from anywhere you
would think to look: the site rendered, /healthz returned 200, and
tests/test_network_surfaces.py passed — it asserts sitemap URLs start with
BASE_URL, comparing the deployed value against itself, which is just as true
when both sides are localhost.

The code default was never at fault; lib/constants.py already falls back to
https://leaflet.2plot.dev. A loopback value can ONLY come from APP_BASE_URL or
DASH_LEAFLET2_BASE_URL being explicitly set to one — and .env.example ships
exactly those, uncommented, for local use. render.yaml declares the right
values but a Render blueprint does not overwrite a variable edited in the
dashboard, so a bad value there survives every deploy.

Nothing here self-heals. Filling in Render's RENDER_EXTERNAL_URL would swap one
wrong canonical origin (*.onrender.com) for another, quietly, which is worse
than the bug.

- lib.constants.base_url_misconfigured() returns an actionable message when a
  hosted service (RENDER_EXTERNAL_HOSTNAME present) resolved BASE_URL to a
  loopback origin, naming which of the two variables is at fault.
- run.py prints the resolved base URL at boot, and that warning after it.
- /healthz reports base_url, so the origin a satellite ADVERTISES is checkable
  from outside it with one curl — and the hub's hourly sweep can flag any
  satellite whose advertised origin is not where it was polled. This is a
  shared drop-in module; the same field belongs in the other satellites.
- .env.example says its values are local-only and why.
- DEPLOYMENT.md and RELEASING.md lead their post-deploy checklists with the
  base_url check, and note that the test suite cannot catch this for you.

Verified: the guard warns on hosted+localhost via either variable and stays
quiet for local dev, for the correct origin, and for a hosted deploy with
neither variable set. flake8 clean, smoke 72/72, 98 tests pass, check_release
clean for 0.2.2.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@pip-install-python
pip-install-python merged commit c224655 into main Aug 5, 2026
12 of 13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant